package com.Hermes.User;

public class ByteTools {
    public static byte[] merge(byte[] b1, byte[] b2) {
        byte[] res = new byte[b1.length + b2.length];
        System.arraycopy(b1, 0, res, 0, b1.length);
        System.arraycopy(b2, 0, res, b1.length, b2.length);
        return res;
    }

    public static byte[] merge3(byte[] b1, byte[] b2, byte[] b3) {
        byte[] res = new byte[b1.length + b2.length + b3.length];
        System.arraycopy(b1, 0, res, 0, b1.length);
        System.arraycopy(b2, 0, res, b1.length, b2.length);
        for (int i = 0; i < b3.length; i++) {
            res[b1.length + b2.length + i] = b3[i];
        }
        return res;
    }

    public static byte[] XOR(byte[] A, byte[] B) {
        int n = A.length;
        int m = B.length;
        int k = Math.max(n, m);
        int j = Math.min(n, m);
        byte[] res = new byte[k];
        for (int i = 0; i < k; i++) {
            res[i] = (byte) (A[i % n] ^ B[i % m]);
        }
        return res;

    }

    public static void _DEBUGBYTES(byte[] a) {
//        System.out.printf("%s: ", a.);
        for (int i = 0; i < a.length; i++) {
            System.out.printf("%d:%d ", i, a[i]);
        }
        System.out.println();

    }

    public static void main(String[] args) {
//        byte[] kv = {47, -59, -18, -51};
//        byte[] btmp ={-48, 98, -93, -86} ;
//        byte[] bf4v = {-89, 77, 1 - 3, 60};
//        byte[] res1 = XOR(bf4v, btmp);
//        _DEBUGBYTES(res1);
//        byte[] res = XOR(kv, bf4v);
//        _DEBUGBYTES(res);
//        byte[] kv = {37, 61, 86, -52};
//        byte[] btmp = {16, 124, 79, 106};
//        byte[] bf4v = {53, 65, 25, -90};
//        byte[] res1 = XOR(bf4v, btmp);
//        _DEBUGBYTES(res1);
//        byte[] res = XOR(bf4v, kv);
//        _DEBUGBYTES(res);

        byte[] kv = {32, -83, 85, -36};
        byte[] btmp = {34, 30, -67, -112};
        byte[] bf4v = {2, -77, -24, 76};
        byte[] res1 = XOR(bf4v, btmp);
        _DEBUGBYTES(res1);
        byte[] res = XOR(bf4v, kv);
        _DEBUGBYTES(res);


    }

}
